裁剪分析 Sample详情

最后更新时间:2019年6月17日

裁剪分析,指按照用户指定的空间范围,形成裁剪框的边界(边界可以是任意多边形),按照该裁剪框对地图图层进行框内或框外的切取,即保留框内或框外的图形及相关属性信息,并把保留的图形及属性内容写到一个新的数据集中,尤其是对面域数据的裁剪操作,裁剪后还需重新组织图形数据的拓扑关系后再予以保存。

裁剪分析包括两种类型:内裁和外裁。内裁是裁剪结果保留为裁剪框边界之内的图形及相关属性;外裁是裁剪结果保留为裁剪框边界之外的图形及相关属性。

1

构建裁剪区

进行裁剪分析,首先需要构建裁剪要素和被裁剪要素,目前MapGIS Mobile提供的裁剪分析功能只支持利用区几何对象对其他要素进行裁剪,所以裁剪要素必须要求是区。裁剪要素和被裁剪要素的获取、构造方法同缓冲区分析中缓冲对象的获取方式一样,有三种方式,可参考对应内容。

//裁剪多边形点坐标(地图坐标)
Dot dot1 = new Dot(12720512.5,3558371.2);
Dot dot2 = new Dot(12720358.6,3561554.1);
Dot dot3 = new Dot(12723017.1,3561615.5);
Dot dot4 = new Dot(12723074.1,3559360.3);
Dot[] dots = {dot1,dot2,dot3,dot4,dot1};
//创建并初始化裁剪多边形图形
GraphicPolygon graphicPolygon = new GraphicPolygon();
graphicPolygon.appendPoints(dots);
graphicPolygon.setColor(addColor);
graphicPolygon.setBorderlineWidth(5);
graphicPolygon.setBorderlineColor(Color.argb(255, 51, 51, 51));	
//显示裁剪多边形图形
graphicsOverlayData.addGraphic(graphicPolygon);
//将裁剪多边形图形转换为几何对象进行分析
Geometry geometry = Graphic.toGeometry(graphicPolygon);	
GeoPolygon geoPolygon = (GeoPolygon)geometry;

2

获取被裁剪要素

获取被裁剪要素,在实际应用中常采用要素查询方式获取。

//获取要素
Feature feature = featureList.get(i);			
//获取要素的几何信息
Geometry geometry = feature.getGeometry();

3

裁剪分析

准备工作完成后,构造空间分析对象,然后调用clip方法进行裁剪分析,可以选择两种方法进行内裁剪或者外裁剪。裁剪之后的几何对象可以转换为Graphic进行绘制,可参考缓冲分析部分。

//构造空间分析对象
SpaAnalysis spaAnalysis = new SpaAnalysis();
//内裁(参数:被裁剪几何、裁剪区)
Geometry geometryClip = spaAnalysis.clip(geometry,geoPolygon);
//外裁(参数:被裁剪几何、裁剪区、裁剪类型 0/1-内裁/外裁)
Geometry geometryClip = spaAnalysis.clip(geometry,geoPolygon,1);

重要说明:在进行裁剪分析时,SDK提供的接口中设置的默认容差值为0.0001,对于经纬度数据,需要传入合适的容差值,对于经纬度数据建议先调用setTolerance()接口使用0.000000001作为容差值。这样设置较小的容差值是为了避免将比较小的地图要素过滤处理掉了,保证裁剪分析结果的正确性。

内裁剪、外裁剪实现效果分别如下图所示:

内裁.jpg 外裁.jpg